package com.shuai.AI.ai_app.auto;

import com.shuai.AI.ai_app.constants.FileConstant;
import java.io.File;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class AutoGetBootFilePath implements CommandLineRunner {
  @Override
  public void run(String... args) throws Exception {
    // 1. 获取当前类的编译后路径（通常在 target/classes/[包路径] 下）
    String classPath = AutoGetBootFilePath.class.getResource("/").getPath();
    log.info("AutoGetBootFilePath类的编译路径：{}", classPath);
    File classDir = new File(classPath);

    // 2. 循环向上查找，直到找到名为 "target" 的目录
    File targetDir = classDir;
    while (targetDir != null && !"target".equals(targetDir.getName())) {
      targetDir = targetDir.getParentFile();
    }

    if (targetDir == null) {
      System.out.println("警告：未找到 target 目录，无法定位项目根目录！");
      return;
    }

    // 3. target 目录的父目录就是项目根目录
    File projectRoot = targetDir.getParentFile();

    // 4. 构造与 src 同级的目标目录（示例：根目录下的 tmp 目录）
    File targetDirResult = new File(projectRoot, "tmp");

    if (targetDirResult.exists()) {
      log.info(targetDirResult.getName() + "目录已存在：{}", targetDirResult.getAbsolutePath());
      FileConstant.FILE_SAVE_DIR = targetDirResult.getAbsolutePath();
      return;
    }

    // 5. 若目录不存在则创建
    targetDirResult.mkdirs();
    FileConstant.FILE_SAVE_DIR = targetDirResult.getAbsolutePath();
    log.info("已创建目录：{}", targetDirResult.getAbsolutePath());
  }
}
